#ifndef MATERIAL_H_
#define MATERIAL_H_

#include <nvVector.h>

class Material{

private:

	nv::vec4f diffuseAmbient;
	nv::vec4f specular;
	float shinyness;

protected:

	void setUpColors();
	void resetColors();

	static const float diffAmbw = 1.f;
	static const float diffAmbx = 0.5f;
	static const float diffAmby = 0.5f;
	static const float diffAmbz = 0.5f;

	static const float specularw = 0.f;
	static const float specularx = 0.0f;
	static const float speculary = 0.0f;
	static const float specularz = 0.0f;

	static const float cShinyness = 0.0f;

public:

	Material(){
		shinyness = cShinyness;

		diffuseAmbient.w = diffAmbw; 	diffuseAmbient.x = diffAmbx;
		diffuseAmbient.y = diffAmby; 	diffuseAmbient.z = diffAmbz;

		specular.w = specularw;			specular.x = specularx;
		specular.y = speculary;			specular.z = specularz;

	}

	Material(nv::vec4f diffuseAmbient, nv::vec4f specular, float shinyness){
		this->diffuseAmbient = diffuseAmbient;
		this->specular = specular;
		this->shinyness = shinyness;
	}

	virtual void begin() = 0;
	virtual void end() = 0;

	virtual ~Material(){};

};

#endif /* MATERIAL_H_ */
